// axios 二次封装
import axios from "axios";
import Qs from "qs";
import store from "../store/index";
export default function request(
  url:string,
  method = "get",
  data:any,  
  headType ="form"
) {
  let sevice = axios.create({
    baseURL: "/VueHandler", // 基本路径
    timeout: 5000, //超时时间
  });

  // 1.不同请求类型 不同参数加载不同的请求头
  if (method == "post") {
    if (headType == "json") {
      //json类型 数据
      sevice.defaults.headers.post["Content-type"] = "application/json";
    } else if (headType == "mul") {
      //上传请求的头
      sevice.defaults.headers.post["Content-type"] = "multipart/form-data";
    } else {
      // POST 请求发送表单类型数据  参数序列化
      console.log(9999999999);
    }
  }
  if (method == "get") {
    // GET 请求发送表单类型数据  参数序列化
    // data = Qs.stringify(data);
  }

  //2 配置请求拦截器
  sevice.interceptors.request.use(
    (config) => {
      // if (!store.state.user.power) {
      //   //权限不够
      //   if ((config.url = "/buy" || config.url == "/pay")) {
      //     return;
      //   }
      // }
      // config.method config.url config.data
      // 拦截器token
      // if (localStorage.token) {
      //   config.headers["Authorization"] = "Bearer " + localStorage.token; // 让每个请求携带自定义token 请根据实际情况自行修改
      // }
      console.log(99999999999);
      return config;
    },
    (err) => {}
  );

  // 3. 响应拦截器
interface IData{
  list:Array<any>,
  code:string,
  pageStart?:number
}
  sevice.interceptors.response.use((data:any) => {
    if (data.code == "50001") {
 
    }
    if (data.code == "50002") {
    
    }
    // 拦截器拦截到后台返回的err字段 直接提示
    if (data.data.err) {
      //错误提示

    }
    return data.data;
  });
  // 4.返回axios请求
  return new Promise((resolve, reject) => {
    sevice({
      url,
      method: method,
      [method == "post" ? "data" : "params"]: data,
    })
      .then((res) => {
        resolve(res);
      })
      .catch((err) => {
        reject(err);
      });
  });
}
